Computer hardware providers are building experimental prototype computer systems with nonvolatile memory that is byte-addressable. In such systems, the nonvolatile memory can be directly mapped by applications in a manner similar to volatile memory and a processing unit's load and store instructions can be used to access the nonvolatile memory. In such computer systems, the only difference between volatile memory and nonvolatile memory is that any modifications made by store instructions to the nonvolatile memory will be persisted.
When computer systems with byte-addressable nonvolatile memory are used as host systems for virtual machines and a hypervisor for supporting the execution of the virtual machines provides a virtual hardware platform that includes the virtualized nonvolatile memory, it can no longer be assumed that all persistent state of virtual machines resides in storage systems. As a result, features of virtualized computer system, such as live migration of virtual machines, fault tolerance, and high availability, which have been enabled by employing shared storage systems, may not be available because of the persistent state of the virtual machines residing in the nonvolatile memory.